/*
 * WindowManager.hpp
 *
 *  Created on: 2024年10月19日
 *      Author: Administrator
 */
#pragma once

#include "window/ZKSlideWindow.h"
#include "control/ZKTextView.h"
#include <vector>

class WindowManager {
public:
    // 添加一个新的窗口
    void addWindow(ZKWindow* window);
    // 设置当前活动的窗口
    void setActiveWindow(size_t index);

    // 切换到上一个窗口
    void switchToPreviousWindow();

    // 切换到下一个窗口
    void switchToNextWindow();

    // 设置窗口列表
    void setWindows(const std::vector<ZKWindow*>& newWindows);

    // 隐藏当前窗口，显示下个窗口
    void hideCurrentAndShowNext();
    // 隐藏当前窗口，显示上个窗口
    void hideCurrentAndShowPrevious();

    size_t getIndex();

    void removeWindow(size_t index);
    void removeWindow(ZKWindow* window);

private:
    std::vector<ZKWindow*> windows;  // 窗口列表
    size_t currentWindowIndex = 0;  // 当前活动的窗口索引

    // 显示当前窗口，隐藏其他窗口
    void showCurrentWindow();

};



class TextViewManager {
public:
    // 设置全局的文本控件列表
    void setGlobalTextViews(const std::vector<ZKTextView*>& textViews);

    // 显示指定下标的文本控件，并隐藏其他文本控件
    void showTextViewAtIndex(size_t index);

    // 返回当前显示文本的下标
    size_t getCurrentTextViewIndex() const;

    // 隐藏当前文本，显示下一个文本
    void showNextTextView();

    // 隐藏当前文本，显示上一个文本
    void showPreviousTextView();

    // 隐藏所有文本控件
    void hideAllTextViews();

private:
    std::vector<ZKTextView*> mGlobalTextViews;
    size_t mCurrentTextViewIndex;  // 当前显示文本的下标
};

